import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

// 引入配置好的axios
import axios from './assets/js/axios'
export default new Vuex.Store({
	/*
		单一状态树
		用来存储整个vue项目中的公共状态参数，相当于存放了一堆全局变量
		先要在state中给每个状态参数设置一个初始值
	*/
    state: {
		token: '',
		userInfo: null,
		userid:"",
		userPhone:"",
		homeId:"",
		idCard:"",
	},
	/*
		状态变更函数
		用来被提交，直接改变state中的某个状态参数
		第一个参数是上面的state，第二个参数是传入的数据
		不能包含异步操作，因为不知道这个异步操作啥时候结束
	*/	
    mutations: {
		changeToken(state,data){
			state.token = data
		},
		changeUserid(state,data){
			state.userid = data
		},
		changeuserPhone(state,data){
			state.userPhone=data
		},
		changehomeId(state,data){
			state.homeId=data
		},
		changeidCard(state,data){
			state.idCard=data
		}
		
	},
	/*
		变更分发函数
		类似于mutations，区别有两点
		1.通过在action中提交mutation，间接改变state中的某个状态参数
		2.在action中可以包含任何异步操作，通过导出一个promise对象，就能知道这个异步操作啥时候结束并且结束时候的状态是什么样的

		第一个参数是与store具有相同方法和属性的context对象
		第二个参数是提交mutation时传入的参数
	*/	
    actions: {
		changeToken2({commit},data){
			commit('changeToken',data)
		},
		changeUserInfo2({commit,state},data){
			// 异步操作
			// return axios.post('/api/user/info',{
			// 	// token: state.token
			// }).then((res) => {
			// 	const {code,msg,info} = res

			// 	if(code == 1){
			// 		// 改变store中的unserInfo
			// 		commit('changeUserInfo',info)
			// 		return '我成功啦'
			// 	}else{
			// 		console.log(msg)
			// 	}
			// })
		},
    }
})
